package com.jingdianjichi.circle.server.config.mybatis;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisConfiguration {

    //添加我们自定义的拦截器,做sql日志的
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new MybatisPlusAllSqlLog());
        return mybatisPlusInterceptor;
    }

    //分页拦截器
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();

        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOverflow(false);
        paginationInnerInterceptor.setMaxLimit(500L);

        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);

        return mybatisPlusInterceptor;
        /*
        paginationInnerInterceptor.setOverflow(false);:
            这个设置用于控制分页查询时的溢出行为。
            当 overflow 设置为 false 时，表示如果请求的页码超出了总页数（即没有更多的数据可供查询），则不会执行查询，而是直接返回空结果。也就是说，用户请求了一个页码，但系统没有该页的数据时，将不会返回结果。
            如果将其设置为 true，则如果请求的页码超出总记录数，系统会自动返回最后一页的数据，而不是空结果。
            paginationInnerInterceptor.setMaxLimit(500L);:

        这个设置用于控制单次查询所能返回的最大记录数。
            setMaxLimit(500L) 表示每次分页查询最多可以返回 500 条记录。这个限制可以避免一次性获取过多数据，造成内存占用过高或性能下降等问题。
            如果某次查询请求的 pageSize（每页条数）超过了这个限制，框架会调整为 500 条。
         */
    }

}
